<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }

        .lb {
            width: 900px;
            height: 505px;
            margin: 100px auto;
            background-color: blue;
            position: relative;
            box-shadow: 0 0 8px black;
            overflow: hidden;
        }

        .lb ol {
            width: 2700px;
            transform: translateX(0);
            transition: 0.2s linear;
        }

        .lb ol li {
            float: left;

        }

        .lb ul {
            position: absolute;
            bottom: 0;
            left: 350px;
            margin-bottom: 20px;
        }

        .lb ul li {
            width: 36px;
            height: 20px;
            border-radius: 5px;
            background-color: black;
            float: left;
            margin-left: 20px;
            opacity: 0.5;
        }

        .lb ul li:hover {
            background-color: #768895;
        }

        .btnl {
            border: none;
            width: 70px;
            height: 160px;
            position: absolute;
            bottom: 200px;
            left: 0;
            background-color: black;
            opacity: 0.5;
            color: #fff;
            display: none;
            z-index: 99;
            font-size: 30px;
        }

        .btnr {
            border: none;
            width: 70px;
            height: 160px;
            position: absolute;
            bottom: 200px;
            right: 0;
            background-color: black;
            opacity: 0.5;
            color: #fff;
            display: none;
            z-index: 99;
            font-size: 30px;
        }

        .btnl:hover {
            /* background-color: white; */
            background-image: linear-gradient(-90deg, #fff, transparent);
        }

        .btnr:hover {
            /* background-color: white; */
            background-image: linear-gradient(90deg, #fff, transparent);
        }
    </style>
</head>

<body>
    <div class="lb">
        <button class="btnl">
            </button>
                <button class="btnr">></button>
                <ol>
                    <li><img src="img/t1.png" alt=""></li>
                    <li><img src="img/t2.png" alt=""></li>
                    <li><img src="img/t3.png" alt=""></li>
                </ol>
                <ul>
                    <li></li>
                    <li></li>
                    <li></li>
                </ul>
    </div>
    <script>
        // 获取元素
        var btnl = document.querySelector('.btnl');
        var btnr = document.querySelector('.btnr');
        var lb = document.querySelector('.lb');
        var ol = document.querySelector('.lb').querySelector('ol');
        var lis = document.querySelector('.lb').querySelector('ul').querySelectorAll('li');
        // 鼠标移到盒子里面左右两个按钮显示出来
        lb.addEventListener('mouseover', function () {
            btnl.style.display = 'block';
            btnr.style.display = 'block';
        })
        // 鼠标移到盒子外面左右两个按钮隐藏起来
        lb.addEventListener('mouseleave', function () {
            btnl.style.display = 'none';
            btnr.style.display = 'none';
        })
        // 点击下面的三个点 会跳转到相应的位置
        for (let i = 0; i < lis.length; i++) {
            lis[i].onclick = function () {
                var x = 900 * i; // 计算位置的量 900为一张图片的宽度
                ol.style.transform = `translateX(${-x}px)` // 添加2d位移
            }
        }
        var j = 0; // 声明一个计数器
        btnr.addEventListener('click', function () { // 点击事件
            j++; // 点击右边的按钮j+1
            if (j > 2) j = 0; // 当j到2的时候在++时，因为右边没有图片了，就另j=2也就是最大值为2
            ol.style.transform = `translateX(${-900 * j}px)`; // 图片位移的值
        })
        btnl.addEventListener('click', function () {
            j--; // 点击左边按钮j-1
            if (j < 0) j = 2; // 与上述同理
            ol.style.transform = `translateX(${-900 * j}px)`;// 图片位移的值
        })
        setInterval(timer, 2000); // 创建一个计时器 间隔为2s 并调用timer函数
        function timer() { // 创建timer函数
            j++; // 每2s执行的时候自加1
            if (j > 2) {
                j = 0;  // 当到最大值的时候，也就是到最后一张图的时候，令j=0
            };
            ol.style.transform = `translateX(${-900 * j}px)`; // 每次位移的值
            for (let k = 0; k < lis.length; k++) { // 排他思想 下面变色前 先把之前的颜色清除为三个点原来的颜色
                lis[k].style.backgroundColor = 'black' 
            }
            lis[j].style.backgroundColor = '#A1B5C3';// 设置 下面三个点也随着图片的移动而变色
        }
        for (let k = 0; k < lis.length; k++) { 
            lis[k].addEventListener('mouseover', function () { // 设置鼠标触碰三个点时变色
                this.style.backgroundColor = '#768895';
                this.style.backgroundColor = '#768895';
            })
            lis[k].addEventListener('mouseleave', function () { // 设置鼠标离开三个点时变色
                this.style.backgroundColor = 'black';
                this.style.backgroundColor = 'black';
            })
        }
    </script>
</body>

</html>